import datetime

from django.db import models
from django.contrib.auth.models import AbstractUser


# 材料
class Cailiao(models.Model):
    name = models.CharField(max_length=32,verbose_name="材料名称")
    paths = models.URLField(verbose_name='文件路径')


# 用户 手机号 角色 岗位 职级 部门
class Users(AbstractUser):
    mobile = models.CharField(max_length=11,verbose_name="手机号")
    juese = models.ForeignKey("JueSe",null=True,blank=True, on_delete=models.SET_NULL)
    gangwei = models.ForeignKey("GangWei",null=True,blank=True, on_delete=models.SET_NULL)
    zhiji = models.ForeignKey("ZhiJi",null=True,blank=True, on_delete=models.SET_NULL)
    bumen = models.ForeignKey("BuMen",null=True,blank=True, on_delete=models.SET_NULL)
    carete_time = models.DateTimeField(verbose_name="创建时间")
    login_time = models.DateTimeField(verbose_name="登录时间")


# 角色 角色名称
class JueSe(models.Model):
    name = models.CharField(max_length=32,verbose_name="角色名称")


# 菜单 自关连 菜单路径 菜单类型 菜单名称
class CaiDan(models.Model):
    name = models.CharField(max_length=32,verbose_name="菜单名称")
    lujing = models.CharField(max_length=32,verbose_name="菜单路径")
    leixing = models.BooleanField(verbose_name="菜单类型")
    c_id = models.ForeignKey('self', null=True,blank=True, on_delete=models.SET_NULL) # 自关联


# 角色与菜单中间表 权限
class CaiJue(models.Model):
    juese = models.ForeignKey(JueSe,null=True,blank=True, on_delete=models.SET_NULL)
    caidan = models.ForeignKey(CaiDan,null=True,blank=True, on_delete=models.SET_NULL)


# 职级 职级名称 备注
class ZhiJi(models.Model):
    name = models.CharField(max_length=32,verbose_name="职级名称")
    beizhu = models.CharField(max_length=128,verbose_name="职级名称")


# 岗位 名称 备注
class GangWei(models.Model):
    name = models.CharField(max_length=32,verbose_name="菜单名称")
    beizhu = models.CharField(max_length=128,verbose_name="备注")
    zhiji = models.ForeignKey(ZhiJi,null=True,blank=True, on_delete=models.SET_NULL)


# 部门 部门名称 自关连 备注
class BuMen(models.Model):
    name = models.CharField(max_length=32,verbose_name="部门名称")
    beizhu = models.CharField(max_length=128, verbose_name="备注")
    cengji = models.ForeignKey("self",null=True,blank=True, on_delete=models.SET_NULL)


# 登陆日志 id 登录ip 账号名称 登录设备 登录地点 登录时间
class RizhiLog(models.Model):
    ip = models.CharField(max_length=32,verbose_name="登录ip")
    user = models.ForeignKey(Users,null=True,blank=True, on_delete=models.SET_NULL)
    shebei = models.CharField(max_length=32,verbose_name="设备名称")
    didain = models.CharField(max_length=32,verbose_name="登录地点")
    shijain = models.DateTimeField(verbose_name="登录时间")


# 操作日志 id 操作人 操作路径(菜单) 操作行为 操作时间
class Caozuo(models.Model):
    user = models.ForeignKey(Users,null=True,blank=True, on_delete=models.SET_NULL)
    lujing = models.CharField(max_length=32,verbose_name="操作路径")
    caizyi = models.CharField(max_length=32,verbose_name="操作行为")
    c_time = models.DateTimeField(default=datetime.datetime.now(),verbose_name="操作时间")


# ------------------------OA审批

# 模板名字表:
class MobanName(models.Model):
    name = models.CharField(max_length=32,verbose_name="模板名称")


# 审批类型 表
class QingJiaType(models.Model):
    name = models.CharField(max_length=32,verbose_name="请假类型")

# 请假模板 开始日期 结束日期 请假原因 请假类型
class QingJia(models.Model):
    create_time = models.DateTimeField(verbose_name="创建时间")
    end_time = models.DateTimeField(verbose_name="结束时间")
    yuanyin = models.CharField(max_length=128,verbose_name="请假原因")
    leixing = models.ForeignKey(QingJiaType,on_delete=models.CASCADE)


# 借款模板 借款日期 借款原因 借款金额
class JieMeny(models.Model):
    j_time = models.DateTimeField(verbose_name="借款日期")
    yuayin = models.CharField(max_length=64,verbose_name="借款原因")
    jine = models.DecimalField(max_digits=12,decimal_places=2,verbose_name="借款金额")


# 出差模板 开始日期 结束日期 目的地 出差原因 同行人
class ChuChai(models.Model):
    c_time = models.DateTimeField(verbose_name="开始时间")
    end_time = models.DateTimeField(verbose_name="结束时间")
    mudi = models.CharField(max_length=64,verbose_name="目的地")
    yuanyin = models.CharField(max_length=64,verbose_name="原因")
    user = models.ForeignKey(Users,null=True, on_delete=models.SET_NULL,blank=True)


# 转正模板 转正日期 自评
class ZhuanZheng(models.Model):
    z_time = models.DateTimeField(verbose_name="转正日期")
    ziping = models.CharField(max_length=256,verbose_name="自评")


# 用车模板 开始时间 结束时间 用车开始地点 用车目的地 用车车型 用车车牌
class Yonghce(models.Model):
    c_time = models.DateTimeField(verbose_name="开始时间")
    end_time = models.DateTimeField(verbose_name="结束时间")
    mudi = models.CharField(max_length=64,verbose_name="开始地")
    end_di = models.CharField(max_length=64,verbose_name="结束地")
    chexing = models.CharField(max_length=32,verbose_name="车型")
    chepai = models.CharField(max_length=16,verbose_name="车牌")


# 审批流程 模板名字 状态
class Shenpi(models.Model):
    mobanname = models.ForeignKey(MobanName,on_delete=models.CASCADE)
    status = models.BooleanField(verbose_name="状态")
    tex = models.CharField(max_length=256,verbose_name="流程说明")


# 审批人员 外键流程 外键人员
class ShenPiUser(models.Model):
    liucheng = models.ForeignKey(Shenpi,null=True,blank=True, on_delete=models.SET_NULL)
    user = models.ForeignKey(Users,null=True,blank=True, on_delete=models.SET_NULL)


# 发起oa id 申请人 审批类型(外键) 申请时间 当前审批人 审批状态 所属部门
class OAfaqi(models.Model):
    STATUS_CHOICES=[
        (1,"未审批"),
        (2,"审批中"),
        (3,"已审批"),
    ]
    user = models.ForeignKey(Users, null=True, blank=True, on_delete=models.SET_NULL,related_name="faqisq")
    mobanname = models.ForeignKey(MobanName,null=True, blank=True, on_delete=models.SET_NULL)
    shijian = models.DateTimeField(verbose_name="申请时间")
    shenpi = models.ForeignKey(Users, null=True, blank=True, on_delete=models.SET_NULL,related_name="faaqisp")
    status = models.CharField(max_length=2,choices=STATUS_CHOICES,verbose_name="审批状态")
    bumen = models.ForeignKey(BuMen, null=True, blank=True, on_delete=models.SET_NULL)


# 工资条 id 姓名 出勤 矿工 请假 基本工资 岗位工资
class GongZi(models.Model):
    user = models.ForeignKey(Users, null=True, blank=True, on_delete=models.SET_NULL)
    chuqin = models.CharField(max_length=16,verbose_name="出勤")
    kuanggong = models.CharField(max_length=16,verbose_name="旷工")
    qingjia = models.CharField(max_length=4,verbose_name="请假")
    jiben = models.DecimalField(max_digits=12,decimal_places=2,verbose_name="基本")
    gangwei = models.DecimalField(max_digits=12, decimal_places=2, verbose_name="岗位工资")




# 报销模板 报销金额 报销事由


